package com.tarena.luban.stock.dubbo.test;

import com.tarena.demo.luban.all.main.rpc.DubboTestApiImpl;
import com.tarena.luban.demo.stock.api.DubboTestApi;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;

/**
 * 开启一个provider的进程
 * 监听端口等待调用
 */
public class DubboProvider {
    public static void main(String[] args) {
        //配置接口和实现类,让dubbo知道对外暴露的信息 包括接口全路径名称 接口抽象方法 接口的实现
        ServiceConfig<DubboTestApi> providerService=new ServiceConfig<>();
        providerService.setInterface(DubboTestApi.class);
        providerService.setRef(new DubboTestApiImpl());
        //准备一个启动dubbo进程对象 包含选择的协议,包含dubbo引用信息 包含注册中心信息
        DubboBootstrap boot=DubboBootstrap.getInstance();
        //每个dubbo进程 必须包含一个名称和spring应用名称 类似的,甚至大部分情况下可以相同
        boot.application("stock-provider");
        //注册中心 localhost:8848
        boot.registry(new RegistryConfig("nacos://localhost:8848"));
        //RPC通信协议配置
        boot.protocol(new ProtocolConfig("dubbo",20990));
        //配置接口信息
        boot.service(providerService);
        boot.start().await();
    }
}
